#ifndef ANALYSE_H
#define ANALYSE_H
//处理函数解析式

#include <QWidget>
#include <vector>
#include <unordered_set>
#include <any>
#include "myfunc.h"

class Analyse: public QWidget
{
    Q_OBJECT
public:
    //expr即传入的解析式，i为检查的第几个元素
    static bool isOpt(const std::string& expr,int i);
    static bool isFuncOpt(char c);
    //static bool isNumber(const std::string& expr,int i);

    static char getOpt(const std::string& expr,int &i);
    static double getNumber(const std::string& expr,int &i);
    static int getPriority(char c);

    static bool checkPost(const std::vector<std::any>& post);

    static bool getPostfix(std::string  expr,std::vector<std::any>& ret);
    static bool getResult(const std::vector<std::any>& post ,double& ret, char k,double keyVal);//根据后缀表达式计算 结果ret 返回 是否计算成功

    static double pi;
    static double e;
    static std::unordered_set<char> xKeySet;
    static std::unordered_set<char> numSet;

};

#endif // ANALYSE_H
